/***
 * You may think you know what the following code does.
 * But you dont. Trust me.
 * Fiddle with it, and youll spend many a sleepless
 * night cursing the moment you thought youd be clever
 * enough to "optimize" the code below.
 * Now close this file and go play with something else.
 */
/***
 * 你可能会认为你读得懂以下的代码。但是你不会懂的，相信我吧。
 * 要是你尝试玩弄这段代码的话，你将会在无尽的通宵中不断地咒骂自己为什么会认为自己聪明到可以优化这段代码。
 * 现在请关闭这个文件去玩点别的吧。
 */
// #ifndef VUE3
import Vue from 'vue'
import App from './App'
import {
	$http
}
from '@escook/request-miniprogram'
import store from './store/store.js'

// 挂载到 uni。一个自定义对象上 方便全局使用
// // 将按需导入的 $http 挂载到 wx 顶级对象之上，方便全局调用
// wx.$http = $http

// // 在 uni-app 项目中，可以把 $http 挂载到 uni 顶级对象之上，方便全局调用
// uni.$http = $http
uni.$http = $http
// 配置请求根路径
$http.baseUrl = 'https://api-hmugo-web.itheima.net/api/public/v1'

// 请求开始之前做一些事情  请求拦截器
$http.beforeRequest = function(options) {

	uni.showLoading({
		title: '数据加载中...',
	})
	if (options.url.indexOf('/my') >= 0) {
		options.header.Authorization = store.state.user.token
	}

}

// 请求完成之后做一些事情  响应拦截器
$http.afterRequest = function(options) {

	console.log('响应拦截器', options)
	if (options.statusCode !== 200) {
		uni.showToast({
			title: '加载失败',
			duration: 5000,
			icon: 'none'
		})
	}
	uni.hideLoading()
}
//封装一个方法 对响应失败的数据进行处理  已在响应拦截器里面做处理了
// uni.$showMsg =function(title="请求失败"){
// 	uni.showToast({
// 		title,
// 		duration:5000,
// 		icon:'none'
// 	})
// }
Vue.config.productionTip = false

App.mpType = 'app'

const app = new Vue({
	...App,
	store
})
app.$mount()
// #endif

// #ifdef VUE3
import {
	createSSRApp
} from 'vue'
import App from './App.vue'
export function createApp() {
	const app = createSSRApp(App)
	return {
		app
	}
}
// #endif
